扩展板CPLD Jtag升级失败问题分析
更新时间: 2026/05/30
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:OpenUBMC 25.09;
- 涉及功能:扩展板CPLD升级,web;
- 触发条件:web页面升级扩展板的CPLD。
- 业务表现:预期升级成功;实际失败。
问题复现步骤
web页面直接升级扩展板的CPLD升级包。
关键日志信息
扩展板 CPLD Jtag升级失败,报错信息: linux kernel日志: 读取厂商ID正常: bypass测试Jtag通路正常: app.log升级日志报错: 当前升级包为场内打包,升级过程中导出解析出的配置文件信息:
定位过程
- 判断BMC中CSR配置的链路是否符合预期(如用jtag0还是jtag1),测试结果Jtag通路OK;
- 从内核日志和app日志看,均报错在svf文件,可能是svf文件有问题,尝试升级包换个环境升级,如果当前svf文件能在其他环境上升级成功,在当前环境上升级失败,可以排除是svf升级文件的内容配置错误问题(未使用过的svf升级包比较容易由于硬件出包有问题导致),如果从cpld链路读到的sample值非0,优先排查是否svf文件有问题,否则则是链路问题;
- 如果从cpld链路读到的sample值为0,基本都是链路读不到值,需要cpld逻辑的人量一下TDO波形;
问题原因
结合日志信息来看,报错内容和之前提供的信息是一致的,升级过程的配置解析流程无问题,是调用底层接口写入svf文件时发生的错误,确认为svf文件异常。
解决方案
重新制作svf文件,制作文件时需要在CPLD烧录器把persist_bit设置为1,JTAG烧录是1,I2C烧录是0。但如果环境上面已经是0的版本,需要先做一个rf mode的svf刷进去,然后再做bg mode的svf才刷进去。